package MediciADistanza.Boundary.user;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import MediciADistanza.Control.User.Module.AccediControl;


/**
 * Interfaccia di accesso base, contiene i form per inserire i dati di accesso e il bottone per accedere
 * 
 *  <p>Semi-implementata</p>
 *  
 *  @author Andrea Iann&igrave;
 */
public class InterfacciaAccesso extends JInternalFrame {
 
	/**
	 * 
	 */
	private static final long serialVersionUID = 8189146803499316243L;
	/**
	 * Label indicante l'id utente
	 */
	private JLabel idUtenteTitle;
	/**
	 * Label indicante il campo della password
	 */
	private JLabel passwordTitle;
	/**
	 * Campo in cui va inserito l'id utente
	 */
	private JTextField idUtente;
	/**
	 * Campo in cui va inserita la password
	 */
	private JPasswordField password;
	/**
	 * Bottone di accesso
	 */
	private JButton accedi;
	/**
	 * Bottone di richiesta nuova password
	 */
	private JButton resetPSWButton;
	/**
	 * Control d'accesso
	 */
	protected AccediControl accediControl;
	/**
	 * Costruttore della classe, instanzia automaticamente la finestra.
	 * 
	 * @param control	<p>Il control che instanzia la finestra</p>
	 */
	public InterfacciaAccesso(AccediControl control) {
		super();
		// TODO Auto-generated constructor stub
		this.idUtenteTitle = new JLabel("ID Utente:");
		this.passwordTitle = new JLabel("Password:");
		this.idUtente = new JTextField();
		this.password = new JPasswordField();
		this.accedi = new JButton("Accedi");
		this.resetPSWButton = new JButton("Resetta Password");
		accedi.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				accediPressed();
			}
		});
		
		resetPSWButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				resetPressed();
			}
		});
		
		this.getContentPane().setLayout(new GridLayout(0,2));
		this.getContentPane().add(idUtenteTitle);
		this.getContentPane().add(idUtente);
		this.getContentPane().add(passwordTitle);
		this.getContentPane().add(password);
		this.getContentPane().add(accedi);
		this.getContentPane().add(resetPSWButton);
		
		this.accediControl = control;
	}
	/**
	 *Restituisce l'id inserito nell'apposito Field 
	 *
	 *@return <p>ID Utente</p>
	 */
	public String getID() {
		return idUtente.getText();
	}
	/**
	 * Restituisce la password inserita sotto forma di chat[], una volta utilizzata &egrave;
	 * consigliabile impostare a 0 tutti i caratteri dell'array.
	 * 
	 * @return <p>Password</p>
	 */
	public char[] getPSW() {
		return password.getPassword();
	}
	/**
	 * Azione eseguita in caso di pressione del tasto accedi
	 */
	private void accediPressed() {
		accediControl.sendModule();
	}
	/**
	 * Azione eseguita in caso di pressione del tasto reset password
	 */
	private void resetPressed() {
		accediControl.resetPSW();
	}
}
 
